﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CMS.BLL;

public partial class Controls_Products_ctrCartDetail : System.Web.UI.UserControl
{

    
    private int nPageCount = 0;
    private int nCurrentLanguage = Support.GetCurrentLanguage();
    private int nDefaultLanguage = Support.GetDefaultLanguage();


    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            BindDataToOfficeDropdown();
            this.ValidateControl();
            this.InitData(1);
        }
    }
    private void ValidateControl()
    {
        rfvTel.ErrorMessage = MessagesValidate.BASKET_TEL_EMPTY[nCurrentLanguage - 1];
        rfvAddress.ErrorMessage = MessagesValidate.BASKET_ADD_EMPTY[nCurrentLanguage - 1];
        lblBasket.Text = MultipleLanguage.LBL_BASKET_DETAIL[nCurrentLanguage - 1];
        lblCustomerInfor.Text = MultipleLanguage.LBL_CUSTOMER_INFOR[nCurrentLanguage - 1];
        btnMakePrice.Text = MultipleLanguage.QUOTA[nCurrentLanguage - 1];
        lblName.Text = MultipleLanguage.FULLNAME[nCurrentLanguage - 1];
        lblAddress.Text = MultipleLanguage.LBL_ADDRESS[nCurrentLanguage - 1];
        lblTel.Text = MultipleLanguage.TELEPHONE[nCurrentLanguage - 1];
        lblEmail.Text = MultipleLanguage.EMAIL [nCurrentLanguage - 1];
        lblContent.Text = MultipleLanguage.CONTENT [nCurrentLanguage - 1];
        lblSendOffice.Text = MultipleLanguage.SEND[nCurrentLanguage - 1];
        btnQuotaExcel.Text = MultipleLanguage.QUOTATION_EXCEL[nCurrentLanguage - 1];
        btnQuotaWord.Text = MultipleLanguage.QUOTATION_WORD[nCurrentLanguage - 1];
    }
    

    private void BindDataToOfficeDropdown()
    {

        DataTable dtb = new DataTable();
        ContactOffice obj = new ContactOffice();
        dtb = obj.Search();
        ddlSendOffice.DataSource = dtb;
        ddlSendOffice.DataValueField = "ContactOfficeID";
        ddlSendOffice.DataTextField = "Name1";
        ddlSendOffice.DataBind();

    }
    private void InitData(int CurrentPageIndex)
    {
         int intCountItem = 0;

        clsBasket objBasket = clsBasket.getclsBaskets (Context);
        dtgCart.DataSource = objBasket.getclsBasketDetail (nDefaultLanguage, nCurrentLanguage, CurrentPageIndex, Config.PAGESIZE, ref nPageCount);
        dtgCart.DataBind();
        intCountItem = objBasket.getCountItem();
        Session["CountItem"] = ConvertData.ConvertToString(intCountItem); 
        if (intCountItem > 0)
        {
            divWarning.Visible = false;
            dtgCart.Visible = true;
            divProductInfor.Visible = true;
            divCustomerInfor.Visible = true;
            lblTotalProductDetail.Text = intCountItem + " " + MultipleLanguage.PRODUCT[nCurrentLanguage - 1];
            lblBasket.Visible = true; 
             
        }
        else
        {
            divWarning.Visible = true;
            Alert1.ShowMessage(1,  MessagesAlert.BASKET_EMPTY[nCurrentLanguage - 1] );
            dtgCart.Visible = false;
            divProductInfor.Visible = false;
            divCustomerInfor.Visible = false;
            lblBasket.Visible = false ; 
        }
    }
 
   
   
    protected void dtgCart_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        double dGrandTotal = 0;
         if ((e.Item.ItemType != ListItemType.Header) && (e.Item.ItemType != ListItemType.Footer))
         {
             Image imgImage = (Image)e.Item.FindControl("imgImage");
             Label lblProductName = (Label)e.Item.FindControl("lblProductName");
             Label lblProductCode = (Label)e.Item.FindControl("lblProductCode");
             Label lblPrice = (Label)e.Item.FindControl("lblPrice");
             Label lblCategory = (Label)e.Item.FindControl("lblCategory");
             Label lblTrademark = (Label)e.Item.FindControl("lblTrademark");
             ImageButton btnDel = (ImageButton)e.Item.FindControl("btnDel");
             Label lblProductID = (Label)e.Item.FindControl("lblProductID");

             int nID = ConvertData.ConvertToInt(DataBinder.Eval(e.Item.DataItem, "ProductID"));
             lblProductID.Text = ConvertData.ConvertToString(nID);
  
             lblProductName.Text = ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductName"));
             string sProductName = ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductName"));
             if (sProductName.Length > 0)
             {
                 lblProductName.Text = MultipleLanguage.PRODUCT[nCurrentLanguage - 1] + ":" + " " + sProductName;
             }
             else
             {
                 lblProductName.Text = MultipleLanguage.PRODUCT[nCurrentLanguage - 1] + ":" + " " + ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductName_Default"));
             }

             lblProductCode.Text = MultipleLanguage.LBL_PRODUCTCODE[nCurrentLanguage - 1] + ":" + " " + ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductCode"));
             imgImage.ImageUrl = Config.ROOT + Config.IMAGE_PRODUCT_DEFAULT_UPLOAD + ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ImageDefault"));
             lblCategory.Text = MultipleLanguage.CATEGORY[nCurrentLanguage - 1] + ":" + " " + ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductCategoryName"));
             lblTrademark.Text = MultipleLanguage.TRADEMARK[nCurrentLanguage - 1] + ":" + " " + ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "TradeMarkName"));



             double dPrice = ConvertData.ConvertToDouble(DataBinder.Eval(e.Item.DataItem, "Price"));
             double dDiscount = ConvertData.ConvertToDouble(DataBinder.Eval(e.Item.DataItem, "PriceSaleOff"));

             if (dDiscount > 0)
             {
                 lblPrice.Text = MultipleLanguage.PRICE[nCurrentLanguage - 1] + ":" + " " + dDiscount + " " + "₫";
                 dGrandTotal = dGrandTotal + dDiscount;
             }
             else
             {
                 if (dPrice > 0)
                 {
                     lblPrice.Text = MultipleLanguage.PRICE[nCurrentLanguage - 1] + ":" + " " + dPrice + " " + "₫";
                     dGrandTotal = dGrandTotal + dPrice;
                 }
                 else
                 {
                     lblPrice.Text = MultipleLanguage.PRICE[nCurrentLanguage - 1] + ":" + " " + MultipleLanguage.CONTACT[nCurrentLanguage - 1];
                 }
             }

             btnDel.CommandArgument = ConvertData.ConvertToString(DataBinder.Eval(e.Item.DataItem, "ProductID"));
             btnDel.OnClientClick = Support.CreateConfirmBoxClient(MessagesAlert.BASKET_DELETE_CONFIRM[0]);

         }
         if (dGrandTotal > 0)
         { lblGrandTotalDetail.Text = dGrandTotal + " " + "₫" ; }
         else
         { lblGrandTotalDetail.Text = MultipleLanguage.CONTACT[nCurrentLanguage - 1]; }
         
    }
    protected void dtgCart_ItemCommand(object source, DataGridCommandEventArgs e)
    {
        string strCommand = e.CommandName;
        int nID = ConvertData.ConvertToInt(e.CommandArgument);

        switch (strCommand)
        {
            case "delete":

                clsBasket objBasket = clsBasket.getclsBaskets (Context);
                objBasket.RemoveItem(nID);
                Response.Redirect(Pages.FrontEnds.BASKET_DETAIL); 
                break;
        }
    }
  
    protected void btnMakePrice_Click(object sender, EventArgs e)
    {
        Basket objBasket = new Basket();
        BasketDetail objBasketDetail = new BasketDetail();
        int nBasketResult = 0;
        int nBasketDetailResult = 0;

        // Basket Information
        objBasket.Data.BasketName = "Đơn hàng ngày " + " " + DateTime.Today;
        objBasket.Data.CustomerAddress = ConvertData.ConvertToString(txtAddress.Text);
        objBasket.Data.CustomerEmail = ConvertData.ConvertToString(txtEmail.Text);
        objBasket.Data.CustomerName = ConvertData.ConvertToString(txtName.Text);
        objBasket.Data.CustomerTel = ConvertData.ConvertToString(txtTel.Text);
        objBasket.Data.DateCreated = ConvertData.ConvertDatetimeToInt(DateTime.Today);
        objBasket.Data.BasketContent = ConvertData.ConvertToString(txtContent.Text);
        objBasket.Data.Status = 0;
        objBasket.Data.ContactOfficeID = ConvertData.ConvertToInt(ddlSendOffice.SelectedValue); 
        nBasketResult = objBasket.Insert();

        // Basket Detail Information
        clsBasket objBk = clsBasket.getclsBaskets(Context);
        DataTable dtbBk = objBk.getclsBasketDetail(nDefaultLanguage, nCurrentLanguage, 1, Config.PAGESIZE, ref nPageCount);
        int nCountItem = ConvertData.ConvertToInt(Session["CountItem"]);
        double dPrice = 0;
        double dPriceSaleOff = 0;

        for (int i = 0; i < nCountItem; i++)
        {
            dPrice = ConvertData.ConvertToInt(dtbBk.Rows[i]["Price"]);
            dPriceSaleOff = ConvertData.ConvertToInt(dtbBk.Rows[i]["PriceSaleOff"]);
            if (dPriceSaleOff > 0)
            { objBasketDetail.Data.Price = dPriceSaleOff; }
            else
            { objBasketDetail.Data.Price = dPrice; }
            objBasketDetail.Data.BasketID = nBasketResult;
            objBasketDetail.Data.ProductID = ConvertData.ConvertToInt(dtbBk.Rows[i]["ProductID"]);
            objBasketDetail.Data.Quantity = 1;
            nBasketDetailResult = objBasketDetail.Insert();

        }

        if (nBasketDetailResult > 0 && nBasketResult > 0)
        {
            divWarning.Visible = true;
            divProduct.Visible = false;
            divCustomerInfor.Visible = false;
            divProductInfor.Visible = false;
            Alert1.ShowMessage(1, MessagesAlert.BASKET_GETQOUTA_SUCCES[nCurrentLanguage -1]);
        }
        else
        {
            divWarning.Visible = true;
            divProduct.Visible = false;
            divCustomerInfor.Visible = false;
            divProductInfor.Visible = false;
            divWarning.Visible = true;
            Alert1.ShowMessage(2, MessagesAlert.BASKET_GETQOUTA_UNSUCCES[nCurrentLanguage -1]);
        }
        Session["CountItem"] = "0";
    }
    protected void btnQuotaWord_Click(object sender, EventArgs e)
    {
        string fileName = "BaoGia.doc";
        // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
        Response.AppendHeader("Content-Type", "application/msword");
        Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
        Response.Write(sContent());
    }
    protected void btnQuotaExcel_Click(object sender, EventArgs e)
    {
        string fileName = "BaoGia.xls";
        // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
        Response.AppendHeader("Content-Type", "application/msexcel");
        Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
        Response.Write(sContent());
    }

    private string sContent()
    {
        int nOffice = ConvertData.ConvertToInt(ddlSendOffice.SelectedValue);
        string sAddress = "";
        string sTel = "";
        string sFax = "";
        string sEmail = "";
        ContactOffice objContactOffice = new ContactOffice();
        objContactOffice.LoadById(nOffice);
        sAddress = ConvertData.ConvertToString(objContactOffice.Data.Address1);
        sTel = ConvertData.ConvertToString( objContactOffice.Data.Tel1);
        sFax =  ConvertData.ConvertToString(objContactOffice.Data.Fax1);
        sEmail =  ConvertData.ConvertToString(objContactOffice.Data.Email);


        Company objCompany = new Company();
        DataTable dtbCompany = new DataTable();
        dtbCompany = objCompany.Search();
        int nCompanyCount = dtbCompany.Rows.Count;
        int nCompanyLastestID = ConvertData.ConvertToInt(dtbCompany.Rows[nCompanyCount - 1]["CompanyID"]);
        objCompany.LoadById(nCompanyLastestID);
        string sCompanyName = "";

        switch (nOffice)
        { 
            case 1:
                sCompanyName = objCompany.Data.CompanyName1.ToUpper();
                break;
            case 2:
                sCompanyName = objCompany.Data.BranchCompanyName1 .ToUpper();
                break;
        }

        string strBody = "<html style=\"width:800px; font-family:Times New Roman; \">" +
               "<body>" +
               "<div>" +
                               "<table>" +
                                  " <tr>" +
                                       "<td style=\"padding-right:10px\"><img src=\"http://www.truongsa.vn/Images/logo_baogia.jpg\" /></td>" +
                                       "<td>" +
                                           "<div><strong>" + sCompanyName + "</strong></div>" +
                                          " <div>Đ/C: " + sAddress + "</div>" +
                                           "<div>Điện thoại: " + sTel + " - Fax: " + sFax + "</div>" +
                                          " <div>Email: " + sEmail + " " + " - " + " " + "Website: " + " " + objCompany.Data.Website + "</div>" +
                                       "</td>" +
                                  " </tr>" +
                               "</table>" +
                                 "  <div>" +
                                      " <div style=\"text-align:right\">" + "<br/><i>Hà nội, ngày" + " " + DateTime.Today.Day + " " + "tháng" + " " + DateTime.Today.Month + " " + "năm" + " " + DateTime.Today.Year + "</div></i>	" +
                                     "  <br/><br/><center><div style =\"font-size:19px; font-weight:bold \">BẢNG CHÀO GIÁ</div></center>	" +
                                     "  <div  style=\"text-align:right\">" +
                                         "  <div>Số BG: </div>" +
                                          " <div>Nhân viên BG: " + " </div>" +
                                      " </div>" +
                                      " <br />" +
                                      " <div>Kính gửi:" + txtName.Text + " </div>" +
                                      " <div>Đơn vị: </div>" +
                                      " <div>Địa chỉ: " + txtAddress.Text + " </div>" +
                                      " <div>Điện thoại:" + txtTel.Text + " </div>" +
                                      " <div>Fax: </div>" +
                                       "<div>Email: " + txtEmail.Text + "</div>" +
                                      " <br />" +
                                      " <div style =\"padding-bottom:15px\">Công ty TNHH Trường Sa là nhà nhập khẩu và phân phối các loại dụng cụ khí nén cầm tay, Thiết bị sửa chữa ô tô… Chúng tôi xin được gửi tới quý Khách hàng bảng chào giá như sau:</div>" +

                                      " <div style =\"padding-bottom:10px;\"><strong><br /><br />I. TÊN HÀNG, GIÁ CẢ</strong></div>" +
                                     "  <div style =\"padding-bottom:10px;\">" +
                                         "<table border=1 cellpadding=0 cellspacing =0  width=\"100%\" style=\" border:1px solid black\">" +
                                              " <tr>" +
                                                 "  <td style=\"text-align:center\">TT</td>" +
                                                 "  <td style=\"text-align:center\">Mã sản phẩm</td>" +
                                                  " <td style=\"text-align:center\">Tên hàng / Mô tả</td>" +
                                                  " <td style=\"text-align:center\">ĐVT</td>" +
                                                  " <td style=\"text-align:center\">SL</td>" +
                                                  " <td style=\"text-align:center\">Đơn giá (VNĐ)</td>" +
                                                  " <td style=\"text-align:center\">Thành tiền (VNĐ)</td>" +
                                                  " <td style=\"text-align:center\">Bảo hành (tháng)</td>" +
                                                  " <td style=\"text-align:center\">TG giao hàng</td>" +
                                             "  </tr>" +
                                           sProductContent() +
                                              "  <tr>" +
                                                  " <td colspan =6>Tổng cộng</td>" +

                                                   "<td>&nbsp;</td>" +
                                                 "  <td colspan =2>&nbsp;</td>" +

                                              " </tr>" +
                                          " </table>" +
                                       "</div>" +

                                     "  <div>" +
                                       "<strong><br/><br/>-  Giá trên chưa bao gồm</strong>" +
                                          " <ul>" +
                                              " <li>Chi phí vận chuyển hàng hóa ngoại tỉnh</li>" +
                                              " <li>Dầu thủy lực, các thiết bị chạy bằng thủy lực, các phụ kiện không thuộc sản phẩm như đầu nối, dây khí, khẩu tuýp… </li>" +
                                              " <li>Chi phí lắp đặt đường điện, nước, khí nén, móng, nền.</li>" +
                                           "</ul>" +
                                       "</div>" +
                                       " <div>" +
                                          " <strong>-  Giá trên đã bao gồm</strong>" +
                                           "<ul>" +
                                              " <li>Thuế VAT (10%)</li>" +
                                              " <li>Chi phí lắp đặt, vận hành chạy thử, chuyển giao công nghệ thiết bị.</li>" +
                                              " <li>Chi phí vận chuyển trong vòng bán kính 30 km tính từ kho Công ty.	</li>" +
                                          " </ul>" +
                                       " </div>" +
                                        "<div><strong>II. CÁC ĐIỀU KHOẢN THƯƠNG MẠI</strong></div>" +
                                        "<div>" +
                                          " <br/>2.1<strong> Hình thức thanh toán:</strong> Chuyển khoản" +
                                         "  <ul>" +
                                             "  <li>Thanh toán lần 1: 40% giá trị HĐ ngay sau khi ký</li>" +
                                              "  <li>Thanh toán lần 2: 50 % giá trị HĐ ngay sau khi giao hàng</li>" +
                                                " <li>Thanh toán lần 3: 10 % ngay sau khi nghiệm thu bàn giao</li>" +
                                          " </ul>" +
                                      "  </div>" +
                                      "  <div>" +
                                        " <br/>2.2 <strong>Thời gian giao hàng</strong>" +
                                          " <ul>" +
                                            "   <li>Các mục Có hàng: Giao hàng trong vòng 2 ngày kể từ ngày bên bán nhận được thanh toán lần 1</li>" +
                                            "    <li>Các mục còn lại: Giao hàng trong vòng 45-120 ngày, kể từ ngày nhận được thanh toán lần 1 </li>" +

                                        "   </ul>" +
                                      "  </div>" +
                                        " <div >" +
                                       "  <br/>2.3 <strong>Địa điểm giao hàng: </strong>Tại kho Công ty Trường sa" +

                                       " </div>" +
                                         " <div >" +
                                       "  <br/>2.4 <strong>Bảo hành</strong>: Bảo hành các hư hỏng do lỗi kỹ thuật thuộc về nhà sản xuất. Tuy nhiên, trong các trường hợp hư hỏng mà do lỗi khách quan, lỗi do người sử dụng, công ty vẫn có trách nhiệm thay thế và phục hồi, nhưng mọi chi phí khách hàng phải chịu." +

                                      "  </div> " +
                                        " <div style=\"padding-bottom:10px\">" +
                                         "<br/>2.5 <strong>Báo giá có giá trị: </strong>Trong vòng 30 ngày kể từ ngày báo giá " +

                                        "</div>" +
                                       " <div style=\"padding-bottom:10px\">" +
                                       " <br/><br/>Chúng tôi xin chân thành cảm ơn sự quan tâm và sư hợp tác của Quý Khách hàng đối với sản phẩm và dịch vụ của chúng tôi và rất mong được phục vụ Quý Khách hàng." +
                                       " </div>" +
                                       " <div style=\"padding-bottom:10px\"><br/>Trân trọng kính chào.</div>" +
                                        "<div><br/> <br/>TM CÔNG TY TNHH TBCN TRƯỜNG SA</div>" +

                                  " </div>" +
   "</div>" +
           "</body>" +
               "</html>";

        return strBody;

    }

    private string sProductContent()
    {
        int nItemID = ConvertData.ConvertToInt(Request.QueryString[Config.ACTION_ID]);
        BasketDetail objBasketDetail = new BasketDetail();
        DataTable dtbBasketDetail = new DataTable();
        dtbBasketDetail = objBasketDetail.Search(nItemID);
        int nBasketRows = dtbBasketDetail.Rows.Count;
        string sContent = "";
        int i = 0;
        foreach (DataGridItem dataGridItem in dtgCart.Items)
        {
            sContent = sContent +
                  " <tr>" +
                  "  <td style=\"text-align:center\">" + ConvertData.ConvertToString(i + 1) + "</td>" +
                  "  <td style=\"text-align:center\">" + ((Label)dataGridItem.FindControl("lblProductCode")).Text + "</td>" +
                  " <td style=\"text-align:center\">" + ((Label)dataGridItem.FindControl("lblProductName")).Text + "</td>" +
                  " <td style=\"text-align:center\">" + "Chiếc" + "</td>" +
                  " <td style=\"text-align:center\">" + "1" + "</td>" +
                  " <td style=\"text-align:center\">&nbsp;</td>" +
                  " <td style=\"text-align:center\">&nbsp;</td>" +
                  " <td style=\"text-align:center\">12</td>" +
                  " <td style=\"text-align:center\">Có hàng</td>" +
                  "  </tr>";
            i += 1;
        }
        return sContent;
    }
}
